---
title: "Amortizacion de Credito"
author: "Brayan Cubides"
toc: true
toc-location: right
toc-depth: 2
#number-sections: true
code-tools: true
lightbox: true
self-contained: true
---
## 1. Crédito a corto plazo: Cuota fija, pagos vencidos
Para calcular la cuota fija \( R\) se usan las siguientes constantes:
- Tasa efectiva mensual:
$$
i_{(12)}=\frac{i^{(12)}}{12} = (1 + i)^{1/12} - 1
$$
- Factor de anualidad mensual:
$$
12 \, a_{\overline{n}|} = \frac{1 - \bigl(1 + i_{(12)}\bigr)^{-12n}}{i_{(12)}}
$$
- Cuota fija:
$$
R = \frac{VP}{12 \, a_{\overline{n}|}}
$$
```{r, fig.width=20, fig.height=5, out.width="100%"}
AmortizacionCortaPlazoFijo <- function (n, i, VP) {
# n : plazo en años
# i : tasa efectiva anual
# VP : valor presente del crédito
i12_12 <- (1 + i)^ (1 / 12 ) - 1
m <- n * 12 # número de pagos m
a_mensual <- (1 - (1 + i12_12)^ (- m)) / i12_12
# cuota fija R
R <- VP / a_mensual
# inicializar
Mes <- 1 : m
Cuota <- rep (R, m)
Intereses <- numeric (m)
Abono <- numeric (m)
Saldo <- numeric (m + 1 )
Saldo[1 ] <- VP
# amortización
for (k in 1 : m) {
Intereses[k] <- i12_12 * Saldo[k]
Abono[k] <- Cuota[k] - Intereses[k]
Saldo[k + 1 ] <- Saldo[k] - Abono[k]
}
tabla <- data.frame (
Mes = Mes,
Cuota = round (Cuota, 2 ),
Intereses = round (Intereses, 2 ),
AbonoACapital = round (Abono, 2 ),
SaldoRestante = round (Saldo[- 1 ], 2 ) # (quitamos el primer saldo de la columna original)
)
return (tabla)
}
# Ejemplo:
tabla_ejemplo <- AmortizacionCortaPlazoFijo (n = 3 , i = 0.14 , VP = 45000000 )
head (tabla_ejemplo, 5 )
tail (tabla_ejemplo, 5 )
```
---
## 2. Crédito a corto plazo: Cuota decreciente, pagos vencidos
- Abono a capital mensual constante:
$$
i_{(12)}=\frac{i^{(12)}}{12} = (1 + i)^{1/12} - 1
$$
$$
\text{AbonoCapital}_i = \frac{VP}{12*n}
$$
- Intereses cada mes:
$$
\text{Intereses}_i = i_{(12)} \times \text{Saldo}_{i-1}
$$
- Cuota mensual variable:
$$
\text{Cuota}_i = \text{AbonoCapital}_i + \text{Intereses}_i
$$
```{r, fig.width=20, fig.height=5, out.width="100%"}
AmortizacionCuotaDecreciente <- function (n, i, VP) {
# n : plazo en años
# i : tasa efectiva anual
# VP : valor presente del crédito
i12_12 <- (1 + i)^ (1 / 12 ) - 1
m <- n * 12 # número total de pagos m
abono_capital <- VP / m # Abono Fijo
# inicializar
Mes <- 1 : m
Cuota <- numeric (m)
Intereses <- numeric (m)
AbonoACapital <- rep (abono_capital, m)
Saldo <- numeric (m + 1 )
Saldo[1 ] <- VP
# amortización
for (k in 1 : m) {
Intereses[k] <- i12_12 * Saldo[k]
Cuota[k] <- AbonoACapital[k] + Intereses[k]
Saldo[k + 1 ] <- Saldo[k] - AbonoACapital[k]
}
tabla <- data.frame (
Mes = Mes,
Cuota = round (Cuota, 2 ),
Intereses = round (Intereses, 2 ),
AbonoACapital = round (AbonoACapital, 2 ),
SaldoRestante = round (Saldo[- 1 ], 2 )
)
return (tabla)
}
# Ejemplo:
tabla_decreciente <- AmortizacionCuotaDecreciente (n = 3 , i = 0.14 , VP = 45000000 )
head (tabla_decreciente,5 )
tail (tabla_decreciente,5 )
```
---
## 3. Largo plazo en pesos con inflación, pagos vencidos
Entradas: tasa real \( e\) , inflación anual \( r\) , años \( n\) , \( VP\) .
Constantes:
- Tasa anual con inflación:
$$
i = (1+e)(1+r) - 1
$$
- Tasa mensual efectiva con inflación:
$$
i_{(12)} = \frac{i^{(12)}}{12} = (1 + i)^{1/12} - 1
$$
- Tasa nominal anual:
$$
i^{(12)}= 12[ (1 + i)^{1/12} - 1 ]
$$
- Tasa mensual real:
$$
e_{(12)} =\frac{e^{(12)}}{12} = (1+e)^{1/12} - 1,\quad e^{(12)}= 12[ (1 + e)^{1/12} - 1 ]
$$
- Valor presente anualidad ajustada:
$$
VPa = \frac{i}{i^{(12)}}\cdot \frac{1}{1 + r}\cdot \frac{1 - (1+e)^{-n}}{e} \cdot 12
$$
- Cuota inicial:
$$
R_0 = \frac{VP}{VPa}
$$
Cada 12 meses la cuota se ajusta por inflación multiplicando por \( 1+r\) .
```{r, fig.width=20, fig.height=5, out.width="100%"}
AmortizacionLargoPlazoInflacion <- function (n, e, r, VP) {
# n : plazo en años
# e : tasa real efectiva anual
# r : inflación anual
# VP : valor presente del préstamo
# tasa anual con inflación
i <- (1 + e)* (1 + r) - 1
# tasas
i_12_12 <- (1 + i)^ (1 / 12 ) - 1 # tasa mensual efectiva con inflación
e_12_12 <- (1 + e)^ (1 / 12 ) - 1 # tasa mensual real
i_12 <- 12 * i_12_12 # tasa nominal anual
e_12_12 <- 12 * e_12_12 # tasa nominal real
# factor de anualidad real ajustada por inflación
VPa <- (i / i_12) * (1 / (1 + r)) * (1 - (1 + e)^ (- n)) / e * 12
# cuota inicial (mensual)
R0 <- VP / VPa
# Inicializar valores
m <- n * 12
Mes <- 1 : m
Cuota <- numeric (m)
Intereses <- numeric (m)
AbonoACapital <- numeric (m)
Saldo <- numeric (m + 1 )
Saldo[1 ] <- VP
# ciclo mes a mes, actualizando la cuota cada año
R <- R0
for (k in 1 : m) {
# cada vez que empieza un nuevo año (mes 1,13,25,...), se ajusta la cuota
if (k > 1 && (k - 1 ) %% 12 == 0 ) {
R <- R * (1 + r)
}
Cuota[k] <- R
Intereses[k] <- i_12_12 * Saldo[k]
AbonoACapital[k] <- R - Intereses[k]
Saldo[k + 1 ] <- Saldo[k] - AbonoACapital[k]
}
data.frame (
Mes = Mes,
Cuota = round (Cuota, 2 ),
Intereses = round (Intereses, 2 ),
AbonoACapital = round (AbonoACapital, 2 ),
SaldoRestante = round (Saldo[- 1 ], 2 )
)
}
# Ejemplo:
tabla_largo_plazo <- AmortizacionLargoPlazoInflacion (n = 15 , e = 0.09 , r = 0.05 , VP = 300000000 )
head (tabla_largo_plazo, 5 )
tail (tabla_largo_plazo, 5 )
```
---
## 4. Crédito en UVR: cuota fija en UVR, pagos vencidos
Entradas: \( e, r, n, VP_\text{pesos}, UVR\) .
Constantes:
- \( VP_{UVR} = \frac{VP_\text{pesos}}{UVR}\)
- Tasa mensual real:
$$
e_{(12)} =\frac{e^{(12)}}{12} = (1+e)^{1/12} - 1,\quad e^{(12)}= 12[ (1 + e)^{1/12} - 1 ]
$$
- Anualidad mensual en UVR:
$$
12\,a_{\overline{n}|} = \frac{1 - (1+e)^{-n}}{e_{(12)}}
$$
- Cuota fija en UVR:
$$
R_{UVR} = \frac{VP_{UVR}}{12\,a_{\overline{n}|}}
$$
Intereses mensuales: \( e_{(12)}\times \) saldo en UVR.
```{r, fig.width=20, fig.height=5, out.width="100%"}
AmortizacionUVR <- function (n, e, r, VP_pesos, UVR_valor) {
# n : plazo en años
# e : tasa real efectiva anual
# r : inflación anual
# VP_pesos : monto del préstamo en pesos
# UVR_valor : valor de la UVR
# convertir VP a UVR
VP_uvr <- VP_pesos / UVR_valor
# tasa mensual real
e_12_12 <- (1 + e)^ (1 / 12 ) - 1
# factor de anualidad mensual en UVR:
a_n_12 <- (1 - (1 + e)^ (- n)) / e_12_12
# cuota fija en UVR
R_uvr <- VP_uvr / a_n_12
# inicializar
m <- n * 12
Mes <- 1 : m
Cuota_uvr <- rep (R_uvr, m)
Intereses_uvr <- numeric (m)
Abono_uvr <- numeric (m)
Saldo_uvr <- numeric (m + 1 )
Saldo_uvr[1 ] <- VP_uvr
# amortización
for (k in 1 : m) {
Intereses_uvr[k] <- e_12_12 * Saldo_uvr[k]
Abono_uvr[k] <- Cuota_uvr[k] - Intereses_uvr[k]
Saldo_uvr[k + 1 ] <- Saldo_uvr[k] - Abono_uvr[k]
}
data.frame (
Mes = Mes,
Cuota_UVR = round (Cuota_uvr, 0 ),
Intereses_UVR = round (Intereses_uvr, 0 ),
AbonoCapital_UVR = round (Abono_uvr, 0 ),
SaldoRestante_UVR = round (Saldo_uvr[- 1 ], 0 )
)
}
# Ejemplo:
tabla_uvr <- AmortizacionUVR (n = 15 , e = 0.09 , r = 0.05 , VP_pesos = 300000000 , UVR_valor = 322.34 )
head (tabla_uvr, 5 )
tail (tabla_uvr, 5 )
```